package com.cg.utils;

import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;

/**
 * @ClassName SalePassword
 * @Description 密码加盐处理工具类
 * @Author CG
 * @Date 2023/12/31 15:39
 **/
public class SaleUtil {

    /**
     * 生成随机盐
     */
    public static byte[] generateSale(){
        byte[] salt = new byte[16];
        new SecureRandom().nextBytes(salt);
        return salt;
    }

    /**
     * 使用盐对密码进行哈希处理
     */
    public static String hashPassword(String password,byte[] salt){
        //这里可以使用一种密码哈希算法，例如SHA-256
        //需要使用密码哈希算法的库，例如BCrypt或MessageDigest等
        //这里只是一个示例，实际中需要导入相应的库
        String hashedPassword = null;
        try {
            MessageDigest md = MessageDigest.getInstance("SHA-256");
            md.update(salt);
            byte[] hashedBytes = md.digest(password.getBytes(StandardCharsets.UTF_8));

            StringBuilder stringBuilder = new StringBuilder();
            for (byte hashedByte : hashedBytes) {
                stringBuilder.append(Integer.toString((hashedByte & 0xff) + 0x100, 16).substring(2, 3));
            }
            hashedPassword = stringBuilder.toString();
        }catch (NoSuchAlgorithmException e){
            e.printStackTrace();
        }
        return hashedPassword;
    }

    /**
     * 新生成的盐
     */
    public static String saltStr(byte[] salt){
        String subString = "";
        for (byte b : salt) {
            subString = Integer.toString((b & 0xff) + 0x100, 16).substring(2,3);
        }
        return subString;
    }
}
